package model.invocatedMethods;

import java.util.concurrent.Callable;

import model.value.VersionnedValue;

import model.subject.Sensor;

/**
 * Implémentation de l'interface Callable utilisée pour la récupération de la valeur du capteur, suite à une notification de changement sur un observeur.
 */
public class GetValueCallable implements Callable<VersionnedValue> {

	private Sensor sensor;
	
	private long latency;	// Latence
	
	public GetValueCallable(Sensor sensor, long latency) {
		this.sensor = sensor;
		
		this.latency = latency;
	}
	
	@Override
	public VersionnedValue call() {
		try {
			Thread.sleep(latency);	// Simulation de la latence
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		
		return sensor.getValue();
	}

}
